<?php
	/*
	* Title: Class Controller
	* Description: Lớp controller cơ bản sẽ được các lớp controller khác kế thừa
	* Author: NhanPro - BingoGroup
	* Date: 03/03/2013
	*/
	class Controller
	{
		protected $_model; // Đối tượng model để lấy dữ liệu
		protected $_controller; // Đối tượng controller để điều khiển
		protected $_action; // Action hiện tại
		protected $_view; // Đối tượng view để hiển thị nội dung
		protected $_modelBaseName; //Tên model
		protected $_layout;
		
		/*
		* Hàm khởi tạo đối tượng controller
		* Hàm thiết lập các thông số cơ bản mặc định của 1 controller như:
		* Action - Model - View
		*/
		
		public function __construct($model, $action, $layout='default')
		{
			$this->_controller = ucwords(__CLASS__);
			$this->_action = $action;
			$this->_modelBaseName = $model;
			$this->_layout=$layout;
			
			$this->_view = new View(ROOT_DIRECTORY . '/views/'. ucwords($this->_modelBaseName) . '/' . $action . '.php', $this->_layout);
		}
		
		protected function _setModel($modelName) // Phương thức thiết lập lại model mặc định
		{
			$modelName .= 'Model';
			$this->_model = new $modelName();
		}
		
		protected function _setView($viewName) // Phương thức thiết lập lại view mặc định
		{
			$this->_view = new View(ROOT_DIRECTORY . '/views/' . strtolower($this->_modelBaseName) . '/' . $viewName . '.php', $this->_layout);
		}
	}
?>